package com.core.shared;

import java.math.BigDecimal;
import java.math.RoundingMode;

/**
 * Created with IntelliJ IDEA.
 * User: lxf
 * Date: 2017/4/11
 * Time: 14:30
 * To change this template use Editor | File and Code Templates.
 */
public class DigitalHandle {

    /**
     * 加法运算
     *
     * @param a
     * @param b
     * @return
     */
    public static BigDecimal add(BigDecimal a, BigDecimal b) {
        return a.add(b);
    }

    /**
     * 减法运算
     *
     * @param a
     * @param b
     * @return
     */
    public static BigDecimal subtract(BigDecimal a, BigDecimal b) {
        return a.subtract(b);
    }

    /**
     * 乘法运算
     *
     * @param a
     * @param b
     * @return
     */
    public static BigDecimal multiply(BigDecimal a, BigDecimal b) {
        return a.multiply(b);
    }

    /**
     * 除法运算
     *
     * @param a
     * @param b
     * @return
     */
    public static BigDecimal divide(BigDecimal a, BigDecimal b) {
        return a.divide(b);
    }

    /**
     * 除法运算
     *
     * @param a
     * @param b
     * @param roundingMode
     * @return
     */
    public static BigDecimal divide(BigDecimal a, BigDecimal b, RoundingMode roundingMode) {
        return a.divide(b, roundingMode);
    }

    /**
     * 大于
     *
     * @param a
     * @param b
     * @return
     */
    public static boolean isLarger(BigDecimal a, BigDecimal b) {
        int index = a.compareTo(b);
        if (index > 0) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 小于
     *
     * @param a
     * @param b
     * @return
     */
    public static boolean isLess(BigDecimal a, BigDecimal b) {
        int index = a.compareTo(b);
        if (index < 0) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 等于
     *
     * @param a
     * @param b
     * @return
     */
    public static boolean equal(BigDecimal a, BigDecimal b) {
        int index = a.compareTo(b);
        if (index == 0) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 保留小数点后几位
     *
     * @param a
     * @param i 保留小数点后的位数
     * @return
     */
    public static BigDecimal scale(BigDecimal a, int i) {
        return a.setScale(i, RoundingMode.HALF_UP);
    }

    /**
     * 保留小数点后几位
     * <ul>
     * <li>RoundingMode.UP         进位</li>
     * <li>RoundingMode.DOWN       舍弃</li>
     * <li>RoundingMode.HALF_UP    四舍五入，到五进位</li>
     * <li>RoundingMode.HALF_DOWN  四舍五入，到五舍弃</li>
     * </ul>
     *
     * @param a
     * @param i            保留小数点后的位数
     * @param roundingMode
     * @return
     */
    public static BigDecimal scale(BigDecimal a, int i, RoundingMode roundingMode) {
        return a.setScale(i, roundingMode);
    }

}
